﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	[DataContract]
	public enum ВидыОбъектовДоступа
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"193029ae-0056-4d56-ac34-89582a1c6667\", \"Представление\":\"Контрагенты\"}")]
		Контрагенты = 0,
		[EnumMember(Value = "{\"Ссылка\":\"0d9d40af-07d3-472c-909d-005e4caf2e8d\", \"Представление\":\"Организации\"}")]
		Организации = 1,
		[EnumMember(Value = "{\"Ссылка\":\"c08c7679-d266-4411-a907-1d8e3e55a093\", \"Представление\":\"ФизическиеЛица\"}")]
		ФизическиеЛица = 2,//Физические лица
		[EnumMember(Value = "{\"Ссылка\":\"a20bdac9-d89f-4f05-8e2c-e40d6ac7dea8\", \"Представление\":\"Проекты\"}")]
		Проекты = 3,
		[EnumMember(Value = "{\"Ссылка\":\"b7fea119-da95-4f24-ac64-6011a0e466f8\", \"Представление\":\"Склады\"}")]
		Склады = 4,
		[EnumMember(Value = "{\"Ссылка\":\"13c9252b-7136-4d09-9e95-4154449da6ac\", \"Представление\":\"ЗаявкиКандидатов\"}")]
		ЗаявкиКандидатов = 5,//Кандидаты
		[EnumMember(Value = "{\"Ссылка\":\"3663c390-1ed6-4d10-815f-98134801d827\", \"Представление\":\"ВнешниеОбработки\"}")]
		ВнешниеОбработки = 6,//Внешние обработки
		[EnumMember(Value = "{\"Ссылка\":\"d109ea1e-2ec2-4a99-a044-b0797b1aa3fe\", \"Представление\":\"Заметки\"}")]
		Заметки = 7,
		[EnumMember(Value = "{\"Ссылка\":\"b9c6accd-0fc3-4477-9e80-a570b3b742fb\", \"Представление\":\"Подразделения\"}")]
		Подразделения = 8,
		[EnumMember(Value = "{\"Ссылка\":\"ab7afa8d-1eec-4fdc-8c95-aee36d47c4ba\", \"Представление\":\"ПодразделенияОрганизаций\"}")]
		ПодразделенияОрганизаций = 9,//Подразделения организаций
	///<summary>
	///Дополнительный вид объекта доступа
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"9e1cc1cc-4e67-4808-84d1-21fb4d1783ac\", \"Представление\":\"Номенклатура\"}")]
		Номенклатура = 10,//Номенклатура (только изменение)
		[EnumMember(Value = "{\"Ссылка\":\"0484cbd7-f333-4058-8f31-69b991e20c84\", \"Представление\":\"Спецификации\"}")]
		Спецификации = 11,
		[EnumMember(Value = "{\"Ссылка\":\"4dc6357a-e5f0-44ef-9114-92c886d494a4\", \"Представление\":\"ЦеныНоменклатуры\"}")]
		ЦеныНоменклатуры = 12,//Цены номенклатуры
	}
	public static partial class ВидыОбъектовДоступа_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid Контрагенты = new Guid("588934ac-1c2a-6766-4d56-0056193029ae");
		public static readonly Guid Организации = new Guid("5e009d90-af4c-8d2e-472c-07d30d9d40af");
		public static readonly Guid ФизическиеЛица = new Guid("8e1d07a9-553e-93a0-4411-d266c08c7679");//Физические лица
		public static readonly Guid Проекты = new Guid("0de42c8e-c76a-a8de-4f05-d89fa20bdac9");
		public static readonly Guid Склады = new Guid("116064ac-e4a0-f866-4f24-da95b7fea119");
		public static readonly Guid ЗаявкиКандидатов = new Guid("5441959e-9d44-aca6-4d09-713613c9252b");//Кандидаты
		public static readonly Guid ВнешниеОбработки = new Guid("13985f81-0148-27d8-4d10-1ed63663c390");//Внешние обработки
		public static readonly Guid Заметки = new Guid("79b044a0-1a7b-fea3-4a99-2ec2d109ea1e");
		public static readonly Guid Подразделения = new Guid("70a5809e-b7b3-fb42-4477-0fc3b9c6accd");
		public static readonly Guid ПодразделенияОрганизаций = new Guid("e3ae958c-476d-bac4-4fdc-1eecab7afa8d");//Подразделения организаций
		///<summary>
		///Дополнительный вид объекта доступа
		///</summary>
		public static readonly Guid Номенклатура = new Guid("fb21d184-174d-ac83-4808-4e679e1cc1cc");//Номенклатура (только изменение)
		public static readonly Guid Спецификации = new Guid("b969318f-e291-840c-4058-f3330484cbd7");
		public static readonly Guid ЦеныНоменклатуры = new Guid("c8921491-d486-a494-44ef-e5f04dc6357a");//Цены номенклатуры
		public static ВидыОбъектовДоступа Получить(this ВидыОбъектовДоступа Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ВидыОбъектовДоступа Получить(this ВидыОбъектовДоступа Значение, Guid Ссылка)
		{
			if(Ссылка == Контрагенты)
			{
				return ВидыОбъектовДоступа.Контрагенты;
			}
			else if(Ссылка == Организации)
			{
				return ВидыОбъектовДоступа.Организации;
			}
			else if(Ссылка == ФизическиеЛица)
			{
				return ВидыОбъектовДоступа.ФизическиеЛица;
			}
			else if(Ссылка == Проекты)
			{
				return ВидыОбъектовДоступа.Проекты;
			}
			else if(Ссылка == Склады)
			{
				return ВидыОбъектовДоступа.Склады;
			}
			else if(Ссылка == ЗаявкиКандидатов)
			{
				return ВидыОбъектовДоступа.ЗаявкиКандидатов;
			}
			else if(Ссылка == ВнешниеОбработки)
			{
				return ВидыОбъектовДоступа.ВнешниеОбработки;
			}
			else if(Ссылка == Заметки)
			{
				return ВидыОбъектовДоступа.Заметки;
			}
			else if(Ссылка == Подразделения)
			{
				return ВидыОбъектовДоступа.Подразделения;
			}
			else if(Ссылка == ПодразделенияОрганизаций)
			{
				return ВидыОбъектовДоступа.ПодразделенияОрганизаций;
			}
			else if(Ссылка == Номенклатура)
			{
				return ВидыОбъектовДоступа.Номенклатура;
			}
			else if(Ссылка == Спецификации)
			{
				return ВидыОбъектовДоступа.Спецификации;
			}
			else if(Ссылка == ЦеныНоменклатуры)
			{
				return ВидыОбъектовДоступа.ЦеныНоменклатуры;
			}
			return ВидыОбъектовДоступа.ПустаяСсылка;
		}
		public static byte[] Ключ(this ВидыОбъектовДоступа Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ВидыОбъектовДоступа Значение)
		{
			switch (Значение)
			{
				case ВидыОбъектовДоступа.Контрагенты: return Контрагенты;
				case ВидыОбъектовДоступа.Организации: return Организации;
				case ВидыОбъектовДоступа.ФизическиеЛица: return ФизическиеЛица;
				case ВидыОбъектовДоступа.Проекты: return Проекты;
				case ВидыОбъектовДоступа.Склады: return Склады;
				case ВидыОбъектовДоступа.ЗаявкиКандидатов: return ЗаявкиКандидатов;
				case ВидыОбъектовДоступа.ВнешниеОбработки: return ВнешниеОбработки;
				case ВидыОбъектовДоступа.Заметки: return Заметки;
				case ВидыОбъектовДоступа.Подразделения: return Подразделения;
				case ВидыОбъектовДоступа.ПодразделенияОрганизаций: return ПодразделенияОрганизаций;
				case ВидыОбъектовДоступа.Номенклатура: return Номенклатура;
				case ВидыОбъектовДоступа.Спецификации: return Спецификации;
				case ВидыОбъектовДоступа.ЦеныНоменклатуры: return ЦеныНоменклатуры;
			}
			return Guid.Empty;
		}
	}
}